let obj = {
    a: 1,
    b: 2
 }
//  obj[Symbol.iterator] = function(){
//     let  keys = Object.keys(obj) 
//     let len = keys.length;
//     let n = 0;
//     // 返回对象 每次迭代会自动调用对象里面的next方法
//     return {
//         next() {
//            //  返回值有value和done
//            return n < len ? {
//                 value: { k: keys[n], v: obj[keys[n++]] },
//                 done: false 
//            }: { done: true }
//         }
//     }
//  }
// var [a,b] = obj
// console.log(a,b);

// var myIterable = {}
// myIterable[Symbol.iterator] = function* () {
//     yield 1;
//     yield 2;
//     yield 3;
// };
// [...myIterable] // [1, 2, 3]


// 为不可迭代的对象添加迭代器
let object = {
    a: 1,
    b: 2
}
// function*() 生成器
object[Symbol.iterator] = function* () {
    var arr = Object.entries(this);
    var len = arr.length;
    for(let i=0;i<len;i++) {
      yield arr[i];
    }
}
var [a,b] = object
console.log(a,b);

// obj[Symbol.iterator] = function(){
//    return Object.entries(obj)[Symbol.iterator]()
// }
// var [a,b] = obj
// console.log(a,b);
